package main1;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

/**
 * @author zhx
 * @since 2020-07-16
 * 给定一个长度为偶数的整数数组 A，只有对 A 进行重组后可以满足 “对于每个 0 <= i < len(A) / 2，都有 A[2 * i + 1] = 2 * A[2 * i]” 时，返回 true；否则，返回 false。
 * <p>
 *  
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/array-of-doubled-pairs
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCode32 {

    public boolean canReorderDoubled(int[] A) {
        int length = A.length;
        Arrays.sort(A);
        Queue<Integer> list = new LinkedList<>();
        for (int i : A) {
            list.add(i);
        }
        while (list.size() != 0) {
            int tmp = list.poll();
            if (list.contains(2 * tmp)) {
                list.remove(2 * tmp);
                continue;
            } else if (list.contains(tmp / 2)) {
                list.remove(tmp / 2);
                continue;
            } else {
                return false;
            }
        }
        return true;


    }
}
